/**
 * concat() 方法用于合并两个或多个数组。此方法不会更改现有数组，而是返回一个新数组。
 * @param  {...any} rest
 * @returns
 */
Array.prototype.myConcat = function (...rest) {
  if (!Array.isArray(this)) {
    throw new TypeError("must be called by array");
  }

  if (this.length < 2) return this;

  // 参数会扁平化第一层[[1]]会将[1]push进数组
  for (let i = 0; i < rest.length; i++) {
    if (Array.isArray(rest[i])) {
      this.push(...rest[i]);
    } else {
      this.push(rest[i]);
    }
  }

  return this;
};

// egg:
let arr = [1, 2];
console.log("[ arr ] >", arr.myConcat(1));
console.log("[ arr ] >", arr.myConcat("a"));
console.log("[ arr ] >", arr.myConcat([[1]]));

let arr1 = [1, 2];
console.log("[ arr ] >", arr1.concat(1));
console.log("[ arr ] >", arr1.concat("a"));
console.log("[ arr ] >", arr1.concat([[1]]));
